﻿using System;
using System.Data;
using System.IO;
using Styx;
using Styx.Helpers;

namespace TuanHA_Paladin
{
    public class THSettings : Settings
    {
        public static readonly THSettings Instance = new THSettings();

        #region DataSource

        public readonly DataSet DsCleanseASAP = new DataSet("CleanseASAP");

        public string PathCastSpells = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                    string.Format(
                                                        @"Routines/TuanHAPaladinSpecialEdition/THListCastSpells.xml"));

        public string PathChannelSpells = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                       string.Format(
                                                           @"Routines/TuanHAPaladinSpecialEdition/THListChannelSpells.xml"));

        public string PathCleanseASAP = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                     string.Format(
                                                         @"Routines/TuanHAPaladinSpecialEdition/THListCleanseASAP.xml"));

        public string PathCleanseDoNot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                      string.Format(
                                                          @"Routines/TuanHAPaladinSpecialEdition/THListCleanseDoNot.xml"));

        public string PathHealDoNot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                                   string.Format(
                                                       @"Routines/TuanHAPaladinSpecialEdition/THListHealDoNot.xml"));


        public bool UpdateStatus;

        public THSettings()
            : base(
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                             string.Format(
                                 @"Routines/TuanHAPaladinSpecialEdition/TuanHA-Paladin-Settings-20121208-{0}.xml",
                                 StyxWoW.Me.Name)))
        {
            DsCleanseASAP.ReadXml(PathCleanseASAP);
        }

        #endregion

        #region General

        /// <summary>
        /// Other Hidden Config
        /// </summary>
        [Setting, DefaultValue("")]
        public string SLastSavedSpec { get; set; }

        [Setting, DefaultValue(true)]
        public bool SLagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAutoAttack { get; set; }

        [Setting, DefaultValue(5000)]
        public int BurstDelay { get; set; }


        /// <summary>
        /// Interrupt
        /// </summary>
        [Setting, DefaultValue(2000)]
        public int SRebuke { get; set; }

        [Setting, DefaultValue(2000)]
        public int SHammerofJustice { get; set; }

        [Setting, DefaultValue(2000)]
        public int SBlindingLight { get; set; }

        [Setting, DefaultValue(2000)]
        public int SRepentance { get; set; }

        [Setting, DefaultValue(false)]
        public bool SHandofProtectionRemoveCC { get; set; }

        [Setting, DefaultValue(true)]
        public bool SRepentanceCC { get; set; }

        /// <summary>
        /// Trinket and Prof
        /// </summary>
        [Setting, DefaultValue(0)]
        public int STrinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int STrinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int STrinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int STrinket2HP { get; set; }

        [Setting, DefaultValue(0)]
        public int SProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int SProfBuffHP { get; set; }

        [Setting, DefaultValue(42)]
        public int SBurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int SBurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool SBurst { get; set; }

        [Setting, DefaultValue(40)]
        public int SHealthStone { get; set; }

        /// <summary>
        /// Cooldown
        /// </summary>
        [Setting, DefaultValue(50)]
        public int SCrowdControl { get; set; }

        [Setting, DefaultValue(70)]
        public int SDevotionAura { get; set; }

        [Setting, DefaultValue(80)]
        public int SDivinePlea { get; set; }

        [Setting, DefaultValue(80)]
        public int SDivineProtection { get; set; }

        [Setting, DefaultValue(30)]
        public int SDivineShield { get; set; }

        [Setting, DefaultValue(70)]
        public int SHandofSacrifice { get; set; }

        [Setting, DefaultValue(40)]
        public int SHandofProtection { get; set; }

        [Setting, DefaultValue(25)]
        public int SLayonHands { get; set; }

        [Setting, DefaultValue(80)]
        public int SSelflessHealer { get; set; }

        [Setting, DefaultValue(100)]
        public int SUse90Attack { get; set; }

        [Setting, DefaultValue(80)]
        public int SUse90Defense { get; set; }

        /// <summary>
        /// Hand of Freedom
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool SHandofFreedomMyself { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHandofFreedomMelee { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHandofFreedomCaster { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHandofFreedomHealer { get; set; }

        /// <summary>
        /// Control
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool SBuff { get; set; }

        [Setting, DefaultValue(true)]
        public bool SMoveToTarget { get; set; }


        [Setting, DefaultValue(true)]
        public bool SRighteousFury { get; set; }

        [Setting, DefaultValue(true)]
        public bool SRacial { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAutoTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool STaunt { get; set; }

        [Setting, DefaultValue(true)]
        public bool STurnEvil { get; set; }

        [Setting, DefaultValue(true)]
        public bool SFace { get; set; }

        [Setting, DefaultValue(true)]
        public bool SPreferKings { get; set; }

        [Setting, DefaultValue(false)]
        public bool SPreferMight { get; set; }


        [Setting, DefaultValue(60)]
        public int SStartEating { get; set; }

        [Setting, DefaultValue(33)]
        public int SPauseKey { get; set; }

        [Setting, DefaultValue(false)]
        public bool SPause { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAOE { get; set; }

        [Setting, DefaultValue(34)]
        public int SAOEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool SUseAoeKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool SUsePauseKey { get; set; }


        /// <summary>
        /// Movement Override
        /// </summary>
        [Setting, DefaultValue(17)] //Q
        public int SStrafleLeft { get; set; }

        [Setting, DefaultValue(23)] //W
        public int SForward { get; set; }

        [Setting, DefaultValue(5)] //E
        public int SStrafleRight { get; set; }

        [Setting, DefaultValue(1)] //A
        public int STurnRight { get; set; }

        [Setting, DefaultValue(19)] //S
        public int SBackward { get; set; }

        [Setting, DefaultValue(4)] //D
        public int STurnLeft { get; set; }

        #endregion

        #region Attack

        [Setting, DefaultValue(true)]
        public bool SCleanseASAP { get; set; }

        [Setting, DefaultValue(1)]
        public int SCleanseDebuffNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAvengingWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool SCrusaderStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool SDivineSStorm { get; set; }

        [Setting, DefaultValue(true)]
        public bool SEmancipate { get; set; }

        [Setting, DefaultValue(true)]
        public bool SExecutionSentence { get; set; }

        [Setting, DefaultValue(true)]
        public bool SExorcism { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGuardianofAncientKings { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHammerofWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHammeroftheRighteous { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHolyPrism { get; set; }

        [Setting, DefaultValue(true)]
        public bool SLightsHammer { get; set; }


        [Setting, DefaultValue(true)]
        public bool SJudgment { get; set; }


        [Setting, DefaultValue(true)]
        public bool STemplarsVerdict { get; set; }

        #endregion

        #region Holy

        [Setting, DefaultValue(70)]
        public int SAttackMode { get; set; }

        [Setting, DefaultValue(70)]
        public int SAvengingWrathHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool SBeaconofLight { get; set; }

        [Setting, DefaultValue(95)]
        public int SDoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool SDenounce { get; set; }

        [Setting, DefaultValue(70)]
        public int SDivineLight { get; set; }

        [Setting, DefaultValue(60)]
        public int SDivineFavor { get; set; }

        [Setting, DefaultValue(0)]
        public int SEternalFlameBlanketHolyPower { get; set; }

        [Setting, DefaultValue(50)]
        public int SFlashofLight { get; set; }

        [Setting, DefaultValue(50)]
        public int SGuardianofAncientKingsHP { get; set; }

        [Setting, DefaultValue(50)]
        public int SHolyAvenger { get; set; }

        [Setting, DefaultValue(95)]
        public int SHolyLight { get; set; }

        [Setting, DefaultValue(80)]
        public int SHolyRadiance { get; set; }

        [Setting, DefaultValue(3)]
        public int SHolyRadianceUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool SHolyShockOffensive { get; set; }

        [Setting, DefaultValue(80)]
        public int SLightofDawn { get; set; }

        [Setting, DefaultValue(3)]
        public int SLightofDawnUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int SManaforDPS { get; set; }

        [Setting, DefaultValue(75)]
        public int SPriorityHeal { get; set; }

        [Setting, DefaultValue(40)]
        public int SUrgentHeal { get; set; }

        [Setting, DefaultValue(50)]
        public int SWordofGlory { get; set; }

        #endregion

        #region Retribution

        [Setting, DefaultValue(3)]
        public int SInquisitionHolyPower { get; set; }

        [Setting, DefaultValue(7)]
        public int SUnittoSealofRighteousness { get; set; }

        [Setting, DefaultValue(2)]
        public int SDivineStormUnit { get; set; }
        
        [Setting, DefaultValue(3)]
        public int SUnittoStartAoE { get; set; }

        [Setting, DefaultValue(4)]
        public int SHammeroftheRighteousUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int SWordofGloryMeRet { get; set; }

        [Setting, DefaultValue(40)]
        public int SWordofGloryFriendRet { get; set; }

        [Setting, DefaultValue(70)]
        public int SFlashofLightMeRet { get; set; }

        [Setting, DefaultValue(40)]
        public int SFlashofLightFriendRet { get; set; }

        [Setting, DefaultValue(true)]
        public bool SSacredShieldRet { get; set; }

        #endregion

        #region Protection

        [Setting, DefaultValue(20)]
        public int SArdentDefender { get; set; }

        [Setting, DefaultValue(true)]
        public bool SAvengersShield { get; set; }

        [Setting, DefaultValue(true)]
        public bool SConsecration { get; set; }

        [Setting, DefaultValue(50)]
        public int SGuardianofAncientKingsProt { get; set; }


        [Setting, DefaultValue(true)]
        public bool SHolyWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool SShieldoftheRighteous { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool SGroup1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool SGroup8 { get; set; }

        #endregion

        #region User Setting 1

        #region General

        /// <summary>
        /// Other Hidden Config
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su1LagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1AutoAttack { get; set; }


        /// <summary>
        /// Interrupt
        /// </summary>
        [Setting, DefaultValue(2000)]
        public int Su1Rebuke { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su1HammerofJustice { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su1BlindingLight { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su1Repentance { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su1HandofProtectionRemoveCC { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1RepentanceCC { get; set; }

        /// <summary>
        /// Trinket and Prof
        /// </summary>
        [Setting, DefaultValue(0)]
        public int Su1Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su1Trinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su1Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su1Trinket2HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su1ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int Su1ProfBuffHP { get; set; }

        [Setting, DefaultValue(42)]
        public int Su1BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int Su1BurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su1Burst { get; set; }

        [Setting, DefaultValue(40)]
        public int Su1HealthStone { get; set; }

        /// <summary>
        /// Cooldown
        /// </summary>
        [Setting, DefaultValue(50)]
        public int Su1CrowdControl { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1DevotionAura { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1DivinePlea { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1DivineProtection { get; set; }

        [Setting, DefaultValue(30)]
        public int Su1DivineShield { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1HandofSacrifice { get; set; }

        [Setting, DefaultValue(40)]
        public int Su1HandofProtection { get; set; }

        [Setting, DefaultValue(25)]
        public int Su1LayonHands { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1SelflessHealer { get; set; }

        [Setting, DefaultValue(100)]
        public int Su1Use90Attack { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1Use90Defense { get; set; }

        /// <summary>
        /// Hand of Freedom
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su1HandofFreedomMyself { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HandofFreedomMelee { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HandofFreedomCaster { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HandofFreedomHealer { get; set; }

        /// <summary>
        /// Control
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su1Buff { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1MoveToTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Face { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1RighteousFury { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Racial { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1AutoTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Taunt { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1TurnEvil { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1PreferKings { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su1PreferMight { get; set; }


        [Setting, DefaultValue(60)]
        public int Su1StartEating { get; set; }

        [Setting, DefaultValue(33)]
        public int Su1PauseKey { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su1Pause { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1AOE { get; set; }

        [Setting, DefaultValue(34)]
        public int Su1AOEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1UseAoeKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1UsePauseKey { get; set; }


        /// <summary>
        /// Movement Override
        /// </summary>
        [Setting, DefaultValue(17)] //Q
        public int Su1StrafleLeft { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Su1Forward { get; set; }

        [Setting, DefaultValue(5)] //E
        public int Su1StrafleRight { get; set; }

        [Setting, DefaultValue(1)] //A
        public int Su1TurnRight { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Su1Backward { get; set; }

        [Setting, DefaultValue(4)] //D
        public int Su1TurnLeft { get; set; }

        #endregion

        #region Attack

        [Setting, DefaultValue(true)]
        public bool Su1CleanseASAP { get; set; }

        [Setting, DefaultValue(1)]
        public int Su1CleanseDebuffNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1AvengingWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1CrusaderStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1DivineSStorm { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Emancipate { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1ExecutionSentence { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Exorcism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1GuardianofAncientKings { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HammerofWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HammeroftheRighteous { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HolyPrism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1LightsHammer { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su1Judgment { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su1TemplarsVerdict { get; set; }

        #endregion

        #region Holy

        [Setting, DefaultValue(70)]
        public int Su1AttackMode { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1AvengingWrathHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1BeaconofLight { get; set; }

        [Setting, DefaultValue(95)]
        public int Su1DoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Denounce { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1DivineLight { get; set; }

        [Setting, DefaultValue(60)]
        public int Su1DivineFavor { get; set; }

        [Setting, DefaultValue(0)]
        public int Su1EternalFlameBlanketHolyPower { get; set; }

        [Setting, DefaultValue(50)]
        public int Su1FlashofLight { get; set; }

        [Setting, DefaultValue(50)]
        public int Su1GuardianofAncientKingsHP { get; set; }

        [Setting, DefaultValue(50)]
        public int Su1HolyAvenger { get; set; }

        [Setting, DefaultValue(95)]
        public int Su1HolyLight { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1HolyRadiance { get; set; }

        [Setting, DefaultValue(3)]
        public int Su1HolyRadianceUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1HolyShockOffensive { get; set; }

        [Setting, DefaultValue(80)]
        public int Su1LightofDawn { get; set; }

        [Setting, DefaultValue(3)]
        public int Su1LightofDawnUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1ManaforDPS { get; set; }

        [Setting, DefaultValue(75)]
        public int Su1PriorityHeal { get; set; }

        [Setting, DefaultValue(40)]
        public int Su1UrgentHeal { get; set; }

        [Setting, DefaultValue(50)]
        public int Su1WordofGlory { get; set; }

        #endregion

        #region Retribution

        [Setting, DefaultValue(3)]
        public int Su1InquisitionHolyPower { get; set; }

        [Setting, DefaultValue(7)]
        public int Su1UnittoSealofRighteousness { get; set; }

        //[Setting, DefaultValue(7)]
        //public int Su1UnittoSealofRighteousnessProt { get; set; }


        [Setting, DefaultValue(3)]
        public int Su1UnittoStartAoE { get; set; }

        //[Setting, DefaultValue(3)]
        //public int Su1UnittoStartAoEProt { get; set; }

        [Setting, DefaultValue(2)]
        public int Su1SDivineStormUnit { get; set; }
        
        [Setting, DefaultValue(4)]
        public int Su1SHammeroftheRighteousUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1WordofGloryMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su1WordofGloryMeProt { get; set; }


        [Setting, DefaultValue(40)]
        public int Su1WordofGloryFriendRet { get; set; }

        [Setting, DefaultValue(70)]
        public int Su1FlashofLightMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su1FlashofLightMeProt { get; set; }

        [Setting, DefaultValue(40)]
        public int Su1FlashofLightFriendRet { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1SacredShieldRet { get; set; }

        #endregion

        #region Protection

        [Setting, DefaultValue(20)]
        public int Su1ArdentDefender { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1AvengersShield { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Consecration { get; set; }

        [Setting, DefaultValue(50)]
        public int Su1GuardianofAncientKingsProt { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su1HolyWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1ShieldoftheRighteous { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool Su1Group1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su1Group8 { get; set; }

        #endregion

        #endregion

        #region User Setting 2

        #region General

        /// <summary>
        /// Other Hidden Config
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su2LagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2AutoAttack { get; set; }


        /// <summary>
        /// Interrupt
        /// </summary>
        [Setting, DefaultValue(2000)]
        public int Su2Rebuke { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su2HammerofJustice { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su2BlindingLight { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su2Repentance { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su2HandofProtectionRemoveCC { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2RepentanceCC { get; set; }

        /// <summary>
        /// Trinket and Prof
        /// </summary>
        [Setting, DefaultValue(0)]
        public int Su2Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su2Trinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su2Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su2Trinket2HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su2ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int Su2ProfBuffHP { get; set; }

        [Setting, DefaultValue(42)]
        public int Su2BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int Su2BurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su2Burst { get; set; }

        [Setting, DefaultValue(40)]
        public int Su2HealthStone { get; set; }

        /// <summary>
        /// Cooldown
        /// </summary>
        [Setting, DefaultValue(50)]
        public int Su2CrowdControl { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2DevotionAura { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2DivinePlea { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2DivineProtection { get; set; }

        [Setting, DefaultValue(30)]
        public int Su2DivineShield { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2HandofSacrifice { get; set; }

        [Setting, DefaultValue(40)]
        public int Su2HandofProtection { get; set; }

        [Setting, DefaultValue(25)]
        public int Su2LayonHands { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2SelflessHealer { get; set; }

        [Setting, DefaultValue(100)]
        public int Su2Use90Attack { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2Use90Defense { get; set; }

        /// <summary>
        /// Hand of Freedom
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su2HandofFreedomMyself { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HandofFreedomMelee { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HandofFreedomCaster { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HandofFreedomHealer { get; set; }

        /// <summary>
        /// Control
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su2Buff { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2MoveToTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Face { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2RighteousFury { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Racial { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2AutoTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Taunt { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2TurnEvil { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2PreferKings { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su2PreferMight { get; set; }


        [Setting, DefaultValue(60)]
        public int Su2StartEating { get; set; }

        [Setting, DefaultValue(33)]
        public int Su2PauseKey { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su2Pause { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2AOE { get; set; }

        [Setting, DefaultValue(34)]
        public int Su2AOEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2UseAoeKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2UsePauseKey { get; set; }


        /// <summary>
        /// Movement Override
        /// </summary>
        [Setting, DefaultValue(17)] //Q
        public int Su2StrafleLeft { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Su2Forward { get; set; }

        [Setting, DefaultValue(5)] //E
        public int Su2StrafleRight { get; set; }

        [Setting, DefaultValue(1)] //A
        public int Su2TurnRight { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Su2Backward { get; set; }

        [Setting, DefaultValue(4)] //D
        public int Su2TurnLeft { get; set; }

        #endregion

        #region Attack

        [Setting, DefaultValue(true)]
        public bool Su2CleanseASAP { get; set; }

        [Setting, DefaultValue(1)]
        public int Su2CleanseDebuffNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2AvengingWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2CrusaderStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2DivineSStorm { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Emancipate { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2ExecutionSentence { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Exorcism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2GuardianofAncientKings { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HammerofWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HammeroftheRighteous { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HolyPrism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2LightsHammer { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su2Judgment { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su2TemplarsVerdict { get; set; }

        #endregion

        #region Holy

        [Setting, DefaultValue(70)]
        public int Su2AttackMode { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2AvengingWrathHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2BeaconofLight { get; set; }

        [Setting, DefaultValue(95)]
        public int Su2DoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Denounce { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2DivineLight { get; set; }

        [Setting, DefaultValue(60)]
        public int Su2DivineFavor { get; set; }

        [Setting, DefaultValue(0)]
        public int Su2EternalFlameBlanketHolyPower { get; set; }

        [Setting, DefaultValue(50)]
        public int Su2FlashofLight { get; set; }

        [Setting, DefaultValue(50)]
        public int Su2GuardianofAncientKingsHP { get; set; }

        [Setting, DefaultValue(50)]
        public int Su2HolyAvenger { get; set; }

        [Setting, DefaultValue(95)]
        public int Su2HolyLight { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2HolyRadiance { get; set; }

        [Setting, DefaultValue(3)]
        public int Su2HolyRadianceUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2HolyShockOffensive { get; set; }

        [Setting, DefaultValue(80)]
        public int Su2LightofDawn { get; set; }

        [Setting, DefaultValue(3)]
        public int Su2LightofDawnUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2ManaforDPS { get; set; }

        [Setting, DefaultValue(75)]
        public int Su2PriorityHeal { get; set; }

        [Setting, DefaultValue(40)]
        public int Su2UrgentHeal { get; set; }

        [Setting, DefaultValue(50)]
        public int Su2WordofGlory { get; set; }

        #endregion

        #region Retribution

        [Setting, DefaultValue(3)]
        public int Su2InquisitionHolyPower { get; set; }

        [Setting, DefaultValue(7)]
        public int Su2UnittoSealofRighteousness { get; set; }

        //[Setting, DefaultValue(7)]
        //public int Su2UnittoSealofRighteousnessProt { get; set; }


        [Setting, DefaultValue(3)]
        public int Su2UnittoStartAoE { get; set; }

        //[Setting, DefaultValue(3)]
        //public int Su2UnittoStartAoEProt { get; set; }
        
        [Setting, DefaultValue(2)]
        public int Su2SDivineStormUnit { get; set; }
        
        [Setting, DefaultValue(4)]
        public int Su2SHammeroftheRighteousUnit { get; set; }


        [Setting, DefaultValue(70)]
        public int Su2WordofGloryMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su2WordofGloryMeProt { get; set; }


        [Setting, DefaultValue(40)]
        public int Su2WordofGloryFriendRet { get; set; }

        [Setting, DefaultValue(70)]
        public int Su2FlashofLightMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su2FlashofLightMeProt { get; set; }

        [Setting, DefaultValue(40)]
        public int Su2FlashofLightFriendRet { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2SacredShieldRet { get; set; }

        #endregion

        #region Protection

        [Setting, DefaultValue(20)]
        public int Su2ArdentDefender { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2AvengersShield { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Consecration { get; set; }

        [Setting, DefaultValue(50)]
        public int Su2GuardianofAncientKingsProt { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su2HolyWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2ShieldoftheRighteous { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool Su2Group1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su2Group8 { get; set; }

        #endregion

        #endregion

        #region User Setting 3

        #region General

        /// <summary>
        /// Other Hidden Config
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su3LagTolerance { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3AutoAttack { get; set; }


        /// <summary>
        /// Interrupt
        /// </summary>
        [Setting, DefaultValue(2000)]
        public int Su3Rebuke { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su3HammerofJustice { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su3BlindingLight { get; set; }

        [Setting, DefaultValue(2000)]
        public int Su3Repentance { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su3HandofProtectionRemoveCC { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3RepentanceCC { get; set; }

        /// <summary>
        /// Trinket and Prof
        /// </summary>
        [Setting, DefaultValue(0)]
        public int Su3Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su3Trinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su3Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Su3Trinket2HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Su3ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int Su3ProfBuffHP { get; set; }

        [Setting, DefaultValue(42)]
        public int Su3BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int Su3BurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su3Burst { get; set; }

        [Setting, DefaultValue(40)]
        public int Su3HealthStone { get; set; }

        /// <summary>
        /// Cooldown
        /// </summary>
        [Setting, DefaultValue(50)]
        public int Su3CrowdControl { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3DevotionAura { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3DivinePlea { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3DivineProtection { get; set; }

        [Setting, DefaultValue(30)]
        public int Su3DivineShield { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3HandofSacrifice { get; set; }

        [Setting, DefaultValue(40)]
        public int Su3HandofProtection { get; set; }

        [Setting, DefaultValue(25)]
        public int Su3LayonHands { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3SelflessHealer { get; set; }

        [Setting, DefaultValue(100)]
        public int Su3Use90Attack { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3Use90Defense { get; set; }

        /// <summary>
        /// Hand of Freedom
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su3HandofFreedomMyself { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HandofFreedomMelee { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HandofFreedomCaster { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HandofFreedomHealer { get; set; }

        /// <summary>
        /// Control
        /// </summary>
        [Setting, DefaultValue(true)]
        public bool Su3Buff { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3MoveToTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Face { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3RighteousFury { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Racial { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3AutoTarget { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Taunt { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3TurnEvil { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3PreferKings { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su3PreferMight { get; set; }


        [Setting, DefaultValue(60)]
        public int Su3StartEating { get; set; }

        [Setting, DefaultValue(33)]
        public int Su3PauseKey { get; set; }

        [Setting, DefaultValue(false)]
        public bool Su3Pause { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3AOE { get; set; }

        [Setting, DefaultValue(34)]
        public int Su3AOEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3UseAoeKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3UsePauseKey { get; set; }


        /// <summary>
        /// Movement Override
        /// </summary>
        [Setting, DefaultValue(17)] //Q
        public int Su3StrafleLeft { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Su3Forward { get; set; }

        [Setting, DefaultValue(5)] //E
        public int Su3StrafleRight { get; set; }

        [Setting, DefaultValue(1)] //A
        public int Su3TurnRight { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Su3Backward { get; set; }

        [Setting, DefaultValue(4)] //D
        public int Su3TurnLeft { get; set; }

        #endregion

        #region Attack

        [Setting, DefaultValue(true)]
        public bool Su3CleanseASAP { get; set; }

        [Setting, DefaultValue(1)]
        public int Su3CleanseDebuffNumber { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3AvengingWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3CrusaderStrike { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3DivineSStorm { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Emancipate { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3ExecutionSentence { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Exorcism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3GuardianofAncientKings { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HammerofWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HammeroftheRighteous { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HolyPrism { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3LightsHammer { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su3Judgment { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su3TemplarsVerdict { get; set; }

        #endregion

        #region Holy

        [Setting, DefaultValue(70)]
        public int Su3AttackMode { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3AvengingWrathHP { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3BeaconofLight { get; set; }

        [Setting, DefaultValue(95)]
        public int Su3DoNotHealAbove { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Denounce { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3DivineLight { get; set; }

        [Setting, DefaultValue(60)]
        public int Su3DivineFavor { get; set; }

        [Setting, DefaultValue(0)]
        public int Su3EternalFlameBlanketHolyPower { get; set; }

        [Setting, DefaultValue(50)]
        public int Su3FlashofLight { get; set; }

        [Setting, DefaultValue(50)]
        public int Su3GuardianofAncientKingsHP { get; set; }

        [Setting, DefaultValue(50)]
        public int Su3HolyAvenger { get; set; }

        [Setting, DefaultValue(95)]
        public int Su3HolyLight { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3HolyRadiance { get; set; }

        [Setting, DefaultValue(3)]
        public int Su3HolyRadianceUnit { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3HolyShockOffensive { get; set; }

        [Setting, DefaultValue(80)]
        public int Su3LightofDawn { get; set; }

        [Setting, DefaultValue(3)]
        public int Su3LightofDawnUnit { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3ManaforDPS { get; set; }

        [Setting, DefaultValue(75)]
        public int Su3PriorityHeal { get; set; }

        [Setting, DefaultValue(40)]
        public int Su3UrgentHeal { get; set; }

        [Setting, DefaultValue(50)]
        public int Su3WordofGlory { get; set; }

        #endregion

        #region Retribution

        [Setting, DefaultValue(3)]
        public int Su3InquisitionHolyPower { get; set; }

        [Setting, DefaultValue(7)]
        public int Su3UnittoSealofRighteousness { get; set; }

        //[Setting, DefaultValue(7)]
        //public int Su3UnittoSealofRighteousnessProt { get; set; }


        [Setting, DefaultValue(3)]
        public int Su3UnittoStartAoE { get; set; }

        //[Setting, DefaultValue(3)]
        //public int Su3UnittoStartAoEProt { get; set; }

        [Setting, DefaultValue(2)]
        public int Su3SDivineStormUnit { get; set; }

        [Setting, DefaultValue(4)]
        public int Su3SHammeroftheRighteousUnit { get; set; }


        [Setting, DefaultValue(70)]
        public int Su3WordofGloryMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su3WordofGloryMeProt { get; set; }


        [Setting, DefaultValue(40)]
        public int Su3WordofGloryFriendRet { get; set; }

        [Setting, DefaultValue(70)]
        public int Su3FlashofLightMeRet { get; set; }

        //[Setting, DefaultValue(70)]
        //public int Su3FlashofLightMeProt { get; set; }

        [Setting, DefaultValue(40)]
        public int Su3FlashofLightFriendRet { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3SacredShieldRet { get; set; }

        #endregion

        #region Protection

        [Setting, DefaultValue(20)]
        public int Su3ArdentDefender { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3AvengersShield { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Consecration { get; set; }

        [Setting, DefaultValue(50)]
        public int Su3GuardianofAncientKingsProt { get; set; }


        [Setting, DefaultValue(true)]
        public bool Su3HolyWrath { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3ShieldoftheRighteous { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool Su3Group1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Su3Group8 { get; set; }

        #endregion

        #endregion

    }
}